﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;

namespace Xm.CustomDesigner.UI
{
    /// <summary>
    /// 扩展方法,使用静态来当作扩展方法的类，静态类不能被实例化
    /// </summary>
    internal static class XmExtension
    {
        /// <summary>
        /// 查找父元素(该方法为扩展方法)
        /// </summary>
        /// <typeparam name="T">扩展类型为UIElement及其子类型</typeparam>
        /// <param name="element">扩展对象本身</param>
        /// <returns>符合要求的UIElement及其子类型</returns>
        internal static T? FindParent<T>(this UIElement element) where T : UIElement
        {
            if (element is T value)
                return value;
            else
            {
                var parent = VisualTreeHelper.GetParent(element);
                if (parent is UIElement last)
                {
                    //递归查找父元素
                    return last.FindParent<T>();     
                }
            }

            //递归出口
            return default;
        }
    }
}
